沙箱隔离
容器、WASM、策略门三种隔离路线的强度、开销与选型
核心要点:
- 容器/microVM:主流生产隔离
- WASM:偏行为审计而非生产隔离
- 策略门:deny-first 权限模型
- 文件与网络隔离须同时存在
- 强隔离 vs 开销 vs 灵活性权衡
本文讲技术隔离机制。隔离要防的攻击见 02-prompt-injection,人工审批交互见 09-人机交互与控制。
为什么 agent 需要沙箱?
核心问题:既然 prompt injection 防不住 100%,还能怎么兜底?
用沙箱限制 agent 即便被劫持也只能在受限范围内行动,把"防注入"兜底成"限影响"。注入无法根除(02-prompt-injection),沙箱提供纵深防御的最后一层:即使指令被劫持,文件、网络、系统调用都被框死。
沙箱有三条技术路线,隔离强度、开销、灵活性各不同。下面逐一展开。
容器和 microVM 隔离强在哪?
核心问题:生产环境最常用哪种隔离,强度如何?
容器与 microVM 是主流生产方案,microVM 用硬件虚拟化提供最强隔离[1]。强度从容器到 microVM 递增。
- 容器(Docker):agent 所有操作限定在容器内,OpenHands、SWE-agent 用此方案。隔离靠 namespace/cgroup,但共享内核。
- gVisor:在容器上加用户态 syscall 拦截层,只实现部分 Linux syscall,缩小内核攻击面,代价是 I/O 性能损耗。
- Firecracker microVM: KVM 硬件虚拟化、独立内核,启动约 125ms、开销小,提供最强隔离,Claude Code 的 web 版用此级别。
可借鉴的判断:隔离强度与启动开销正相关——批量短任务可接受容器,运行不可信代码则上 microVM。
WASM 沙箱和策略门各管什么?
核心问题:除了容器,还有哪两种轻量隔离,各自定位?
WASM 偏行为审计,策略门偏细粒度权限控制——两者不是容器的替代,而是不同层次的补充。
- WASM 沙箱:在 WASM/WASI 边界内跑工具,追踪 source-to-sink 数据流(环境变量/文件 → LLM 上下文),检测注入路径和权限违规,产出可审计报告[2]。它的目标是审计而非生产隔离。
- 策略门(deny-first):Claude Code 的权限模型是多阶段流水线(预过滤 → hook → deny-first 规则 → 权限处理),默认拒绝、显式授权,Auto 模式叠加 ML 分类器;写访问严格限定工作目录,子 agent 用 worktree 隔离[1]。
策略门粒度最细但是软性的——能被绕过且性能约束会降级粒度,所以它要和硬隔离叠加,而非单用。
三路线怎么选或叠加?
核心问题:给定一个 agent,该用哪条路线?
按隔离强度需求选,最佳实践是分层叠加,且文件与网络隔离必须同时存在。三路线权衡如下:
| 路线 | 隔离强度 | 开销 | 定位 |
|---|---|---|---|
| 容器/microVM | 强(VM 最强) | 高 | 生产隔离主力 |
| WASM | 中 | 低 | 行为审计 |
| 策略门 | 细但软 | 低 | 细粒度权限 |
@tbl-agent-sec-sandbox-routes 沙箱三路线对比:容器与 microVM、WASM 沙箱、策略门的隔离强度、开销与适用定位
关键结论:文件系统隔离和网络隔离必须同时存在才构成有效边界——只锁文件不锁网络,数据照样能外泄(对应 02-prompt-injection 的 lethal trifecta 出口)。可借鉴的默认:硬隔离(容器/VM)兜底 + 策略门做细粒度 + 文件网络双锁。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 沙箱定位 | 防注入兜底成限影响,纵深防御最后一层 |
| 容器/microVM | 主流生产隔离,microVM(Firecracker)最强 |
| WASM | source-to-sink 数据流审计,非生产隔离 |
| 策略门 | deny-first 细粒度,但软性需硬隔离叠加 |
| 有效边界 | 文件 + 网络隔离必须同时存在 |
参考资料
- Liu et al. Dive into Claude Code: The Design Space of Today's and Future AI Agent Systems. arXiv:2604.14228, 2026. https://arxiv.org/abs/2604.14228
- MCP-SandboxScan: WASM-based Secure Execution and Runtime Analysis for MCP Tools. arXiv:2601.01241, 2026. https://arxiv.org/abs/2601.01241
延伸阅读
- 02-prompt-injection — 沙箱要兜底的攻击
- 09-人机交互与控制 — 权限的人工审批交互